import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Main extends JFrame implements ActionListener {
    private JTextField display;
    private String operator = "";
    private double firstNumber = 0;
    private boolean startNewNumber = true;

    public Main() {
        setTitle("王泳茜牌计算器");
        setSize(300, 400);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setResizable(false);

        // 设置显示框样式
        display = new JTextField("0");
        display.setFont(new Font("Arial", Font.BOLD, 24));
        display.setHorizontalAlignment(SwingConstants.RIGHT);
        display.setEditable(false);
        display.setBackground(new Color(255, 182, 193));  // 粉色背景
        display.setForeground(new Color(255, 20, 147));  // 深粉色字体
        add(display, BorderLayout.NORTH);

        // 按钮的文字数组
        String[] buttonTexts = {
                "7", "8", "9", "÷",
                "4", "5", "6", "×",
                "1", "2", "3", "-",
                "0", ".", "=", "+",
                "C", "←"
        };

        JPanel panel = new JPanel();
        panel.setLayout(new GridLayout(5, 4, 5, 5));
        panel.setBackground(new Color(255, 182, 193));  // 背景粉色

        // 创建按钮
        for (String text : buttonTexts) {
            JButton btn = new JButton(text);
            btn.setFont(new Font("Arial", Font.BOLD, 20));
            btn.setBackground(new Color(255, 228, 225));  // 浅粉色背景
            btn.setForeground(new Color(255, 20, 147));  // 深粉色文字
            btn.setFocusPainted(false);

            // 鼠标悬停时改变颜色
            btn.addMouseListener(new MouseAdapter() {
                public void mouseEntered(MouseEvent e) {
                    btn.setBackground(new Color(255, 105, 180));  // 悬停时颜色
                }

                public void mouseExited(MouseEvent e) {
                    btn.setBackground(new Color(255, 228, 225));  // 恢复原背景色
                }
            });

            btn.addActionListener(this);
            panel.add(btn);
        }

        add(panel, BorderLayout.CENTER);
    }

    public void actionPerformed(ActionEvent e) {
        String cmd = e.getActionCommand();

        if ("0123456789.".contains(cmd)) {
            if (startNewNumber) {
                display.setText(cmd.equals(".") ? "0." : cmd);
                startNewNumber = false;
            } else {
                if (cmd.equals(".") && display.getText().contains(".")) return;
                display.setText(display.getText() + cmd);
            }
        } else if ("+-×÷".contains(cmd)) {
            operator = cmd;
            firstNumber = Double.parseDouble(display.getText());
            startNewNumber = true;
        } else if (cmd.equals("=")) {
            double secondNumber = Double.parseDouble(display.getText());
            double result = 0;

            switch (operator) {
                case "+": result = firstNumber + secondNumber; break;
                case "-": result = firstNumber - secondNumber; break;
                case "×": result = firstNumber * secondNumber; break;
                case "÷":
                    if (secondNumber == 0) {
                        display.setText("error");
                        operator = "";
                        startNewNumber = true;
                        return;
                    }
                    result = firstNumber / secondNumber;
                    break;
            }

            display.setText(String.valueOf(result));
            startNewNumber = true;
        } else if (cmd.equals("C")) {
            display.setText("0");
            firstNumber = 0;
            operator = "";
            startNewNumber = true;
        } else if (cmd.equals("←")) {
            String text = display.getText();
            if (text.length() > 1) {
                display.setText(text.substring(0, text.length() - 1));
            } else {
                display.setText("0");
            }
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> {
            new Main().setVisible(true);
        });
    }
}

//import javax.swing.*;
//import java.awt.*;
//import java.awt.event.*;
//import java.util.Random;
//
//public class Main extends JFrame implements ActionListener {
//    private JTextField usernameField, captchaField;
//    private JPasswordField passwordField;
//    private JLabel captchaLabel;
//    private String captchaCode;
//
//    public Main() {
//        setTitle("学生成绩管理系统登录");
//        setSize(400, 300);
//        setLocationRelativeTo(null);
//        setDefaultCloseOperation(EXIT_ON_CLOSE);
//
//        // 设置粉色背景
//        getContentPane().setBackground(new Color(255, 204, 229)); // 浅粉色背景
//
//        // 使用GridBagLayout来使组件居中
//        setLayout(new GridBagLayout());
//        GridBagConstraints gbc = new GridBagConstraints();
//        gbc.insets = new Insets(10, 10, 10, 10);
//        gbc.anchor = GridBagConstraints.CENTER;
//
//        // 创建组件
//        Font font = new Font("微软雅黑", Font.PLAIN, 14); // 设置字体为微软雅黑
//
//        JLabel usernameLabel = new JLabel("用户名：");
//        usernameLabel.setForeground(new Color(255, 105, 180)); // 深粉色字体
//        usernameLabel.setFont(font); // 设置字体为微软雅黑
//        usernameField = new JTextField(20); // 设置宽度为20
//        usernameField.setBackground(Color.white);
//        usernameField.setForeground(new Color(255, 105, 180)); // 深粉色字体
//        usernameField.setFont(font); // 设置字体为微软雅黑
//
//        JLabel passwordLabel = new JLabel("密码：");
//        passwordLabel.setForeground(new Color(255, 105, 180)); // 深粉色字体
//        passwordLabel.setFont(font); // 设置字体为微软雅黑
//        passwordField = new JPasswordField(20); // 设置宽度为20
//        passwordField.setBackground(Color.white);
//        passwordField.setForeground(new Color(255, 105, 180)); // 深粉色字体
//        passwordField.setFont(font); // 设置字体为微软雅黑
//
//        JLabel captchaTextLabel = new JLabel("验证码：");
//        captchaTextLabel.setForeground(new Color(255, 105, 180)); // 深粉色字体
//        captchaTextLabel.setFont(font); // 设置字体为微软雅黑
//        captchaLabel = new JLabel();
//        captchaLabel.setForeground(new Color(255, 105, 180)); // 深粉色验证码
//        captchaLabel.setFont(font); // 设置字体为微软雅黑
//
//        captchaField = new JTextField(20); // 设置宽度为20
//        captchaField.setFont(font); // 设置字体为微软雅黑
//
//        // 创建粉色的按钮
//        JButton loginButton = new JButton("登录");
//        loginButton.setBackground(new Color(255, 153, 204)); // 粉色按钮
//        loginButton.setForeground(Color.white);
//        loginButton.setFont(font); // 设置字体为微软雅黑
//        loginButton.addActionListener(this);
//
//        JButton clearButton = new JButton("清空");
//        clearButton.setBackground(new Color(255, 153, 204)); // 粉色按钮
//        clearButton.setForeground(Color.white);
//        clearButton.setFont(font); // 设置字体为微软雅黑
//        clearButton.addActionListener(this);
//
//        // 将组件添加到窗口
//        gbc.gridx = 0;
//        gbc.gridy = 0;
//        add(usernameLabel, gbc);
//        gbc.gridx = 1;
//        add(usernameField, gbc);
//
//        gbc.gridx = 0;
//        gbc.gridy = 1;
//        add(passwordLabel, gbc);
//        gbc.gridx = 1;
//        add(passwordField, gbc);
//
//        gbc.gridx = 0;
//        gbc.gridy = 2;
//        add(captchaTextLabel, gbc);
//        gbc.gridx = 1;
//        add(captchaLabel, gbc);
//        gbc.gridy = 3;
//        add(captchaField, gbc);
//
//        gbc.gridx = 0;
//        gbc.gridy = 4;
//        add(loginButton, gbc);
//        gbc.gridx = 1;
//        add(clearButton, gbc);
//
//        generateCaptcha();  // 生成验证码
//    }
//
//    // 生成随机验证码
//    private void generateCaptcha() {
//        captchaCode = String.valueOf(new Random().nextInt(9999) + 1000); // 4位数字验证码
//        this.captchaLabel.setText(captchaCode);
//    }
//
//    @Override
//    public void actionPerformed(ActionEvent e) {
//        String cmd = e.getActionCommand();
//
//        if (cmd.equals("登录")) {
//            String username = usernameField.getText();
//            String password = new String(passwordField.getPassword());
//            String captcha = captchaField.getText();
//
//            // 校验用户名、密码、验证码
//            if (username.equals("231210400431") && password.equals("123456") && captcha.equals(captchaCode)) {
//                // 登录成功，打开主界面
//                new MainFrame().setVisible(true);
//                this.setVisible(false); // 关闭登录界面
//            } else {
//                JOptionPane.showMessageDialog(this, "登录失败，请检查用户名、密码或验证码", "错误", JOptionPane.ERROR_MESSAGE);
//            }
//        } else if (cmd.equals("清空")) {
//            usernameField.setText("");
//            passwordField.setText("");
//            captchaField.setText("");
//        }
//    }
//
//    public static void main(String[] args) {
//        new Main().setVisible(true);
//    }
//}
//
//class MainFrame extends JFrame {
//    public MainFrame() {
//        setTitle("学生成绩管理系统");
//        setSize(600, 400);
//        setLocationRelativeTo(null);
//
//        // 设置粉色背景
//        getContentPane().setBackground(new Color(255, 204, 229)); // 浅粉色背景
//
//        // 创建菜单栏
//        JMenuBar menuBar = new JMenuBar();
//        JMenu menu = new JMenu("功能");
//        menuBar.add(menu);
//
//        // 创建粉色的菜单项
//        JMenuItem studentInfoMenuItem = new JMenuItem("学生信息管理");
//        studentInfoMenuItem.setBackground(new Color(255, 153, 204)); // 粉色菜单项
//        studentInfoMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 14)); // 设置字体为微软雅黑
//
//        JMenuItem gradeMenuItem = new JMenuItem("成绩管理");
//        gradeMenuItem.setBackground(new Color(255, 153, 204)); // 粉色菜单项
//        gradeMenuItem.setFont(new Font("微软雅黑", Font.PLAIN, 14)); // 设置字体为微软雅黑
//
//        // 添加增、删、查、改成绩的子菜单
//        JMenu gradeSubMenu = new JMenu("成绩操作");
//        JMenuItem addGradeMenuItem = new JMenuItem("增加成绩");
//        JMenuItem deleteGradeMenuItem = new JMenuItem("删除成绩");
//        JMenuItem modifyGradeMenuItem = new JMenuItem("修改成绩");
//        JMenuItem queryGradeMenuItem = new JMenuItem("查询成绩");
//
//        addGradeMenuItem.setBackground(new Color(255, 153, 204)); // 粉色菜单项
//        deleteGradeMenuItem.setBackground(new Color(255, 153, 204)); // 粉色菜单项
//        modifyGradeMenuItem.setBackground(new Color(255, 153, 204)); // 粉色菜单项
//        queryGradeMenuItem.setBackground(new Color(255, 153, 204)); // 粉色菜单项
//
//
//        gradeSubMenu.add(addGradeMenuItem);
//        gradeSubMenu.add(deleteGradeMenuItem);
//        gradeSubMenu.add(modifyGradeMenuItem);
//        gradeSubMenu.add(queryGradeMenuItem);
//
//        menu.add(studentInfoMenuItem);
//        menu.add(gradeSubMenu);
//        menu.add(new JMenuItem("查询"));
//        menu.add(new JMenuItem("系统设置"));
//        menu.add(new JMenuItem("退出"));
//
//        setJMenuBar(menuBar);
//
//        // 创建欢迎标签
//        JLabel welcomeLabel = new JLabel("欢迎使用学生成绩管理系统！");
//        welcomeLabel.setFont(new Font("微软雅黑", Font.BOLD, 24)); // 设置字体为微软雅黑
//        welcomeLabel.setForeground(new Color(255, 105, 180)); // 设置文字颜色为粉色
//        welcomeLabel.setHorizontalAlignment(JLabel.CENTER);
//
//        // 布局管理器
//        setLayout(new BorderLayout());
//        add(welcomeLabel, BorderLayout.CENTER);
//
//        // 退出菜单项的操作
//        JMenuItem exitMenuItem = new JMenuItem("退出");
//        exitMenuItem.addActionListener(e -> System.exit(0));
//    }
//}
